package string;

import java.util.Arrays;

/**
 * String支持正则表达式方法2:
 * String[] split(String regex)
 * 将当前字符串中满足正则表达式的部分进行拆分，将拆分后的所有部分以数组形式返回
 */
public class SplitDemo {
    public static void main(String[] args) {
        String str = "abc123def456ghi";
        String[] data = str.split("[0-9]+");
        System.out.println(data.length);
//        String line = Arrays.toString(data);
//        System.out.println(line);
        System.out.println(Arrays.toString(data));
        /*
            按照特定字符拆分，则直接指明即可
         */
        String str2 = "abc=def=ghi";
        String[] data2 = str2.split("=");
        System.out.println(Arrays.toString(data2));

        /*
            如果连续遇到可拆分项，那么之间会拆分出一个空字符串(不是空格！)
         */
        String str3 = "abc==def=ghi";
        String[] data3 = str3.split("=");
        System.out.println(Arrays.toString(data3));
        /*
            如果字符串最开始就是可拆分项，那么上来就会拆分出一个空字符串
         */
        String str4 = "=abc=def=ghi";
        String[] data4 = str4.split("=");
        System.out.println(Arrays.toString(data4));

        /*
            如果是在字符串末尾连续遇到可拆分项，那么所有拆分出来的空字符串都会被舍弃
         */
        String str5 = "abc=def=ghi===================";
        String[] data5 = str5.split("=");
        System.out.println(Arrays.toString(data5));

        /*
            split提供了一个重载方法
            String[] split(String regex,int limit)
            limit表示拆分项的个数
         */
        String line = "abc=def=ghi=jkl===";
        String[] array = line.split("=",2);//仅拆分出两项
        System.out.println(Arrays.toString(array));
        array = line.split("=",3);//仅拆分出3项
        System.out.println(Arrays.toString(array));
        //当limit>最多可拆分项时，那么保留所有可拆分项
        array = line.split("=",10);
        System.out.println(Arrays.toString(array));
        //当limit=0时，与一个参数的split方法效果一致
        array = line.split("=",0);
        System.out.println(Arrays.toString(array));
        //当limit<0时，应拆尽拆
        array = line.split("=",-1);
        System.out.println(Arrays.toString(array));

    }
}
